public class Offer42 {
    //    public int maxSubArray(int[] nums) {
//        int[] dp = new int[nums.length];
//        int max = Integer.MIN_VALUE;
//        for (int i = 0; i < nums.length; i++) {
//            if (i==0){
//                dp[i] = nums[i];
//                max = Math.max(max,dp[i]);
//            }else {
//                dp[i] = dp[i-1]>0?dp[i-1]+nums[i]:nums[i];
//                max = Math.max(max,dp[i]);
//            }
//        }
//        return max;
//
//    }
    public static int maxSubArray(int[] nums) {
    int[] dp = new int[2];
    dp[0] = 0;
    int max = Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++) {
            dp[(i+1)%2] = Math.max(nums[i],nums[i]+dp[i%2]);
            max = Math.max(max,dp[(i+1)%2]);
        }
        return max;
    }

    public static void main(String[] args) {
        int[] arr=new int[]{-2,1,-3,4,-1,2,1,-5,4};
        maxSubArray(arr);
    }

}
